LeetCode | 24. 两两交换链表中的节点
我的Bilibili频道:香芋派Taro
我的个人博客:taropie0224.github.io(阅读体验更佳)
我的公众号:香芋派的烘焙坊
我的音频技术交流群:1136403177
我的个人微信:JazzyTaroPie
https://leetcode-cn.com/problems/swap-nodes-in-pairs/
题解
1 | class Solution |
思路
以1->2->3->4举例
- 新建三个指针,one指向1,two指向2,three指向3
- 让two的下一个节点指向one,即2->1
- one的下一个节点指向函数swapPairs(three)返回的值
- 进入函数swapPairs(three),此时新的one指向3,two指向4,three指向nullptr
- 让two的下一个节点指向one,即4->3
- one的下一个节点指向函数swapPairs(three)返回的值,此时由于three为空,所以返回的值它本身,即nullptr,所以3->nullptr
- 返回two,此时的two指向4,回到步骤3,所以步骤3中的one的下一个节点指向4,即1->4
- 完成2->1->4->3的两两交换
- 总结:递归,首先按顺序每两个节点组为一对,交换它们,最后从后向前依次把每一对连接起来(倒数第二个对的第二个节点指向倒数第一对的第一个节点,倒数第四对的第二个节点指向倒数第三对的第一个节点······)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 香芋派Taro!